import { JulianDate, Viewer } from "cesium";

export class TimeUtils {
    constructor(private viewer: Viewer) {

    }
    /**
     * cesium时间转中国公历时间(cesium时间距离中国时间相差了8小时)
     */
    cesiumTimeToGregorianDate() {
        const chinaCurrentTime = JulianDate.now()
        // 以当前cesium时间为准增加8小时为中国小时
        JulianDate.addHours(this.viewer.clock.currentTime, 8, chinaCurrentTime);
        return JulianDate.toGregorianDate(chinaCurrentTime);
    }
    /**
     * 以中国公历时间设置cesium时间的小时
     * @param hours 中国公历小时
     */
    setHours(hours: number) {
        /* 1. 获取当前时间并转化为中国时间 */
        const chinaCurrentTime = JulianDate.now();
        JulianDate.addHours(this.viewer.clock.currentTime, 8, chinaCurrentTime);
        
        /* 2. 计算当前时间差，将当前china时间为目标时间，转化成cesium时间并赋值给cesium */
        const chinaCurrentTimeGregorianDate = JulianDate.toGregorianDate(chinaCurrentTime);
        const hoursDiff = hours - chinaCurrentTimeGregorianDate.hour;
        const chinaTime = JulianDate.addHours(chinaCurrentTime, hoursDiff, chinaCurrentTime);
        JulianDate.addHours(chinaTime, -8, this.viewer.clock.currentTime);

        /* 3. 返回设置小时后的china时间 */
        return JulianDate.toGregorianDate(chinaTime);
    }
}